package com.nuanshui.heatedloan.userinfo.dal.mapper;

import com.nuanshui.heatedloan.userinfo.model.SafeToken;
import com.nuanshui.heatedloan.userinfo.model.UserDeviceToken;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;


public interface UserTokenMapper {
	/**
	 * 根据用户id和设别的类型获取UserToken
	 * @param 
	 * @author guohao
	 * @date 2015年4月15日 下午3:42:53
	 */
    List<UserDeviceToken> selectByUserIdAndDeviceType(@Param(value = "userId") String userId, @Param(value = "deviceType") String deviceType);

	/**
	 * 添加一条记录
	 * @param 
	 * @author guohao
	 * @date 2015年4月15日 下午4:19:40
	 */
    void addUserToken(UserDeviceToken userDeviceToken);
	
	/**
	 * 更新用户某个设备的某个 token
	 * @param 
	 * @author guohao
	 * @date 2015年4月15日 下午4:41:38
	 */
    void updateUserToken(UserDeviceToken userDeviceToken);
    /**
     * 删除用户的 某个设备
     * @param 
     * @author guohao
     * @date 2015年4月15日 下午4:57:25
     */
    void deleteUserTokenByUserIdAndDeviceType(@Param("userId") Long userId, @Param("deviceType") String deviceType);
    /**
     * 根据用户ID获取对应的token
     * @param 
     * @author guohao
     * @date 2015年4月16日 上午10:24:28
     */
	List<HashMap<String, Object>> selectUserTokensByUserIds(@Param(value = "userIds") List<String> userIds, @Param("currentUserId") String currentUserId, @Param("type") String type,@Param("clientType")String clientType);

  
	/**
	 * 设置用户id为Null
	 * @param userId
	 */
    void setuserIdNullByUserId(@Param("userId") String userId);
	/**
	 * 删除deviceToken
	 * @param deviceToken
	 * @param deviceType
	 */
    void deleteByDeviceTokenAndDeviceType(@Param("deviceToken") String deviceToken, @Param("deviceType") String deviceType);
	/**
	 * 保存saveToken
	 * @param safeToken
	 */
    void saveSafeToken(SafeToken safeToken);
	/**
	 * 保存用户和safeToken绑定关系
	 * @param safeToken
	 * @param userId
	 */
    void saveUserSafeToken(@Param("safeToken") String safeToken, @Param("userId") String userId);
	/**
	 * 删除用户和safeToken的绑定关系
	 * @param safeToken
	 * @param userId
	 */
    void delUserSafeToken(@Param("safeToken") String safeToken, @Param("userId") String userId);
	/**
	 * 获取safeToken的个数
	 * @param token
	 * @return
	 */
    Integer loadTokenCount(@Param("token") String token);

	/**
	 * 通过用户id来获取userToken
	 * @param userId
	 * @return
	 */
	UserDeviceToken loadUserTokenByUserId(@Param("userId") String userId);

}
